from collections import deque


class MessageQueue:
    def __init__(self, max_size=1000):
        """
        初始化消息队列
        :param max_size: 队列最大长度，默认为1000
        """
        self.queue = deque(maxlen=max_size)

    def enqueue(self, message):
        """
        添加消息到队列尾部
        当队列满时自动移除最前面的元素
        """
        self.queue.append(message)

    def dequeue(self):
        """
        从队列头部取出消息
        如果队列为空则返回None
        """
        return self.queue.popleft() if self.queue else None

    def size(self):
        """获取当前队列大小"""
        return len(self.queue)

    def is_empty(self):
        """检查队列是否为空"""
        return len(self.queue) == 0

    def is_full(self):
        """检查队列是否已满"""
        return len(self.queue) >= self.queue.maxlen

    def clear(self):
        """清空队列"""
        self.queue.clear()

    def get_all(self):
        """获取队列中所有消息的列表"""
        return list(self.queue)